package com.lplb.common.core.service;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lplb.common.core.utils.DefaultsUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 *  通用 IService + baseMapper  ===>  所有service 继承 BaseIService
 *
 * @author 王松
 * @WX-QQ 1720696548
 * @date 2019/10/31 21:12
 */
@Slf4j
//public class BaseIServiceImpl<M extends BaseMapper<T>, T> implements BaseIService<M, T> {
public class BaseIServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> {

    /**
     * baseMapper = 当前继承BaseIServiceImpl类传递的Mapper 类 (提供Api操作，及Mapper.xml自定义sql)
     */
    @Autowired
    protected M baseMapper;
    @Autowired
    protected HttpServletRequest request;
    @Autowired
    protected HttpServletResponse response;
    /**
     * execute：可以执行所有SQL语句，没有返回值, 一般用于执行DDL语句。
     * update：用于执行INSERT、UPDATE、DELETE等DML语句。
     * queryXxx：用于DQL数据查询语句。
     */
    @Autowired
    protected JdbcTemplate jdbcTemplate;
    /**
     * this = 当前继承BaseIServiceImpl+T 类的 Iservice类 （baseMapper增强, 提供批量操作方法）
     */
    // protected this

    /**
     * 获取分页对象   === mybatis-plus
     *
     * @return
     */
    protected <T> com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> getPage() {
        // 页数
        Integer cursor = DefaultsUtil.castToInt(request.getParameter("current"), 1);
        // 分页大小
        Integer limit = DefaultsUtil.castToInt(request.getParameter("size"), 20);
        return new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(cursor, limit);
    }
}



